package com.nageoffer.onethread.core.monitor;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DeltaWrapper {

    private long lastValue = 0L;
    private long delta = 0L;

    /**
     * 更新当前值，计算出与上一次值之间的 delta。
     * @param current 当前累计值（例如 completedTaskCount 或 rejectCount）
     */
    public synchronized void update(long current) {
        this.delta = current - this.lastValue;
        this.lastValue = current;
    }

    /**
     * Micrometer 采样时会调用此方法。
     * @return 本轮的增量（delta）
     */
    public synchronized long getDelta() {
        return this.delta;
    }
}

